\section{Ejercicio 4}

Para este ejercicio se utilizaron tres lotes de tareas:

\begin{itemize}
\item Primer lote de tareas:

\begin{verbatim}
@0:
TaskCPU 150
TaskCPU 200
TaskCPU 300
TaskCPU 200
\end{verbatim}

Podemos observar en la Figura \ref{ej4_lote1} el diagrama para el Scheduler Round-Robin con un quantum de 50. Las tareas se ejecutar en el orden en que fueron recibidas, de manera cíclica durante 50 ciclos de clock para luego pasar a la ejecución de la siguiente tarea.

Se puede observar que la primer tarea es la primera en finalizar, por lo que luego de su finalización se cicla entre las tareas restantes. 

\begin{figure}[H]
  \begin{center}
  \includegraphics[width=0.95\textwidth]{imagenes/ej4-lote1.png} 
  \end{center}
  \caption{Diagrama de Gantt - SchedRR - 1 Core - Penalidad 10 por Context Switch - Quantum 50}
  \label{ej4_lote1}
\end{figure}


\item Segundo lote de tareas:

\begin{verbatim}
@0:
TaskCPU 150
TaskCPU 50
TaskCPU 200
TaskCPU 200
\end{verbatim}

Con un quantum de 50 y dos tareas de corta ejecución respecto a las dos tareas restantes, se puede observar cómo se cicla siempre entre las tareas a las que todavía les fata terminar su ejecución. Para este caso, la segunda tarea termina su ejecución en la primera asignación del procesador, mientras que la primer tarea requiere tres asignaciones para poder terminar.

\begin{figure}[H]
  \begin{center}
  \includegraphics[width=0.95\textwidth]{imagenes/ej4-lote2.png} 
  \end{center}
  \caption{Diagrama de Gantt - SchedRR - 1 Core - Penalidad 10 por Context Switch - Quantum 50}
  \label{ej4_lote2}
\end{figure}


\item Tercer lote de tareas:

\begin{verbatim}
@0:
TaskCPU 200
TaskIO 30 100
TaskCPU 200
TaskIO 70 100
TaskCPU 200
\end{verbatim}

Para este lote de tareas, se utilizaron tareas de uso de CPU y de IO. Se realizó un test con 1 y 2 Cores, con un quamtum de 50 cada uno. Se utilizaron tareas de CPU y de IO.

En la Figura \ref{ej4_lote3} se muestra cómo se cicla entre las tareas. Para las tareas de IO, donde el tiempo de uso de CPU es de 30 ciclos de clock para la primera de ellas y 20 para la segunda, se puede observar que al terminar esos ciclos de clock la tarea queda bloqueada y se procede a la ejecución de la próxima tarea. 

\begin{figure}[H]
  \begin{center}
  \includegraphics[width=0.95\textwidth]{imagenes/ej4-lote3.png} 
  \end{center}
  \caption{Diagrama de Gantt - SchedRR - 1 Core - Penalidad 10 por Context Switch - Quantum 50}
  \label{ej4_lote3}
\end{figure}


En la Figura \ref{ej4_lote3_02} vemos el efecto del uso de un core adicional y cómo una misma tarea puede ejecutarse en dos cores en distintos momentos en el tiempo. La primer tarea, comienza su ejecución en el primer core, para finalizar su ejecución en el segundo core. En el caso de la ultima tarea, en cambio de core se da antes de su ultima asignación de procesador, es decir que su ejecución comienza y finaliza en el mismo core, pero en algún momento su ejecución se realiza en otro core.

\begin{figure}[H]
  \begin{center}
  \includegraphics[width=0.95\textwidth]{imagenes/ej4-lote3-02.png} 
  \end{center}
  \caption{Diagrama de Gantt - SchedRR - 2 Cores - Penalidad 10 por Context Switch - Quantum 50}
  \label{ej4_lote3_02}
\end{figure}


\end{itemize}